package com.itrus.cryptorole.bc;

import com.itrus.cryptorole.CryptoException;
import com.itrus.cryptorole.NotSupportException;
import com.itrus.cryptorole.Recipient;
import com.itrus.cryptorole.SignatureVerifyException;
import com.itrus.svm.SVM;
import com.itrus.svm.SignerAndEncryptedDigest;
import com.itrus.util.FileUtils;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.PrivateKey;
import java.security.Security;
import java.security.Signature;
import java.security.SignatureException;
import java.security.UnrecoverableKeyException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.Enumeration;
import javax.security.auth.x500.X500Principal;
import org.bouncycastle.cms.CMSEnvelopedData;
import org.bouncycastle.cms.CMSException;
import org.bouncycastle.cms.RecipientId;
import org.bouncycastle.cms.RecipientInformation;
import org.bouncycastle.cms.RecipientInformationStore;
import org.bouncycastle.jce.provider.BouncyCastleProvider;

public class RecipientBcImpl extends Recipient
{
  private static String PROVIDER = "BC";

  static
  {
    if (Security.getProvider(PROVIDER) == null)
      Security.addProvider(new BouncyCastleProvider());
  }

  // ERROR //
  public static void decryptFileWithSymmetricKey(String paramString1, String paramString2, String paramString3)
    throws CryptoException
  {
    // Byte code:
    //   0: aconst_null
    //   1: astore_3
    //   2: aconst_null
    //   3: astore 4
    //   5: new 54	java/io/FileInputStream
    //   8: dup
    //   9: aload_1
    //   10: invokespecial 57	java/io/FileInputStream:<init>	(Ljava/lang/String;)V
    //   13: astore 5
    //   15: new 59	java/io/FileOutputStream
    //   18: dup
    //   19: aload_2
    //   20: invokespecial 60	java/io/FileOutputStream:<init>	(Ljava/lang/String;)V
    //   23: astore 6
    //   25: aload_0
    //   26: invokevirtual 66	java/lang/String:getBytes	()[B
    //   29: astore 32
    //   31: new 62	java/lang/String
    //   34: dup
    //   35: aload 32
    //   37: invokespecial 69	java/lang/String:<init>	([B)V
    //   40: astore 33
    //   42: aload 33
    //   44: invokestatic 75	org/bouncycastle/util/encoders/Base64:decode	(Ljava/lang/String;)[B
    //   47: astore 34
    //   49: aconst_null
    //   50: checkcast 77	[B
    //   53: pop
    //   54: aconst_null
    //   55: checkcast 77	[B
    //   58: pop
    //   59: new 62	java/lang/String
    //   62: dup
    //   63: aload 34
    //   65: invokespecial 69	java/lang/String:<init>	([B)V
    //   68: astore 37
    //   70: aload 37
    //   72: ldc 79
    //   74: invokevirtual 83	java/lang/String:indexOf	(Ljava/lang/String;)I
    //   77: istore 38
    //   79: aload 37
    //   81: iconst_0
    //   82: iload 38
    //   84: invokevirtual 87	java/lang/String:substring	(II)Ljava/lang/String;
    //   87: astore 39
    //   89: aload 37
    //   91: iload 38
    //   93: iconst_1
    //   94: iadd
    //   95: invokevirtual 90	java/lang/String:substring	(I)Ljava/lang/String;
    //   98: astore 40
    //   100: aload 39
    //   102: invokevirtual 66	java/lang/String:getBytes	()[B
    //   105: astore 41
    //   107: aload 40
    //   109: invokevirtual 66	java/lang/String:getBytes	()[B
    //   112: astore 42
    //   114: new 62	java/lang/String
    //   117: dup
    //   118: aload 41
    //   120: invokespecial 69	java/lang/String:<init>	([B)V
    //   123: astore 43
    //   125: aload 43
    //   127: invokestatic 75	org/bouncycastle/util/encoders/Base64:decode	(Ljava/lang/String;)[B
    //   130: astore 44
    //   132: new 62	java/lang/String
    //   135: dup
    //   136: aload 42
    //   138: invokespecial 69	java/lang/String:<init>	([B)V
    //   141: astore 45
    //   143: aload 45
    //   145: invokestatic 75	org/bouncycastle/util/encoders/Base64:decode	(Ljava/lang/String;)[B
    //   148: astore 46
    //   150: new 92	javax/crypto/spec/DESedeKeySpec
    //   153: dup
    //   154: aload 44
    //   156: invokespecial 93	javax/crypto/spec/DESedeKeySpec:<init>	([B)V
    //   159: astore 47
    //   161: ldc 95
    //   163: invokestatic 101	javax/crypto/SecretKeyFactory:getInstance	(Ljava/lang/String;)Ljavax/crypto/SecretKeyFactory;
    //   166: aload 47
    //   168: invokevirtual 105	javax/crypto/SecretKeyFactory:generateSecret	(Ljava/security/spec/KeySpec;)Ljavax/crypto/SecretKey;
    //   171: astore 48
    //   173: new 107	javax/crypto/spec/IvParameterSpec
    //   176: dup
    //   177: aload 46
    //   179: iconst_0
    //   180: bipush 8
    //   182: invokespecial 110	javax/crypto/spec/IvParameterSpec:<init>	([BII)V
    //   185: astore 49
    //   187: ldc 112
    //   189: invokestatic 117	javax/crypto/Cipher:getInstance	(Ljava/lang/String;)Ljavax/crypto/Cipher;
    //   192: astore 50
    //   194: aload 50
    //   196: iconst_2
    //   197: aload 48
    //   199: aload 49
    //   201: aconst_null
    //   202: invokevirtual 121	javax/crypto/Cipher:init	(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
    //   205: sipush 10240
    //   208: newarray byte
    //   210: astore 51
    //   212: aconst_null
    //   213: checkcast 77	[B
    //   216: pop
    //   217: aload 5
    //   219: aload 51
    //   221: invokevirtual 127	java/io/InputStream:read	([B)I
    //   224: istore 53
    //   226: iload 53
    //   228: iconst_m1
    //   229: if_icmpne +34 -> 263
    //   232: aload 6
    //   234: aload 50
    //   236: invokevirtual 130	javax/crypto/Cipher:doFinal	()[B
    //   239: invokevirtual 135	java/io/OutputStream:write	([B)V
    //   242: aload 5
    //   244: ifnull +8 -> 252
    //   247: aload 5
    //   249: invokevirtual 138	java/io/InputStream:close	()V
    //   252: aload 6
    //   254: ifnull +8 -> 262
    //   257: aload 6
    //   259: invokevirtual 139	java/io/OutputStream:close	()V
    //   262: return
    //   263: aload 6
    //   265: aload 50
    //   267: aload 51
    //   269: iconst_0
    //   270: iload 53
    //   272: invokevirtual 143	javax/crypto/Cipher:update	([BII)[B
    //   275: invokevirtual 135	java/io/OutputStream:write	([B)V
    //   278: goto -61 -> 217
    //   281: astore 30
    //   283: aload 6
    //   285: astore 4
    //   287: aload 5
    //   289: astore_3
    //   290: new 32	com/itrus/cryptorole/CryptoException
    //   293: dup
    //   294: aload 30
    //   296: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   299: astore 31
    //   301: aload 31
    //   303: athrow
    //   304: astore 9
    //   306: aload_3
    //   307: ifnull +7 -> 314
    //   310: aload_3
    //   311: invokevirtual 138	java/io/InputStream:close	()V
    //   314: aload 4
    //   316: ifnull +8 -> 324
    //   319: aload 4
    //   321: invokevirtual 139	java/io/OutputStream:close	()V
    //   324: aload 9
    //   326: athrow
    //   327: astore 7
    //   329: new 32	com/itrus/cryptorole/CryptoException
    //   332: dup
    //   333: aload 7
    //   335: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   338: astore 8
    //   340: aload 8
    //   342: athrow
    //   343: new 32	com/itrus/cryptorole/CryptoException
    //   346: dup
    //   347: aload 14
    //   349: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   352: astore 15
    //   354: aload 15
    //   356: athrow
    //   357: new 32	com/itrus/cryptorole/CryptoException
    //   360: dup
    //   361: aload 16
    //   363: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   366: astore 17
    //   368: aload 17
    //   370: athrow
    //   371: new 32	com/itrus/cryptorole/CryptoException
    //   374: dup
    //   375: aload 18
    //   377: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   380: astore 19
    //   382: aload 19
    //   384: athrow
    //   385: new 32	com/itrus/cryptorole/CryptoException
    //   388: dup
    //   389: aload 20
    //   391: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   394: astore 21
    //   396: aload 21
    //   398: athrow
    //   399: new 32	com/itrus/cryptorole/CryptoException
    //   402: dup
    //   403: aload 22
    //   405: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   408: astore 23
    //   410: aload 23
    //   412: athrow
    //   413: new 32	com/itrus/cryptorole/CryptoException
    //   416: dup
    //   417: aload 24
    //   419: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   422: astore 25
    //   424: aload 25
    //   426: athrow
    //   427: new 32	com/itrus/cryptorole/CryptoException
    //   430: dup
    //   431: aload 26
    //   433: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   436: astore 27
    //   438: aload 27
    //   440: athrow
    //   441: new 32	com/itrus/cryptorole/CryptoException
    //   444: dup
    //   445: aload 28
    //   447: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   450: astore 29
    //   452: aload 29
    //   454: athrow
    //   455: astore 12
    //   457: new 32	com/itrus/cryptorole/CryptoException
    //   460: dup
    //   461: aload 12
    //   463: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   466: astore 13
    //   468: aload 13
    //   470: athrow
    //   471: astore 10
    //   473: new 32	com/itrus/cryptorole/CryptoException
    //   476: dup
    //   477: aload 10
    //   479: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   482: astore 11
    //   484: aload 11
    //   486: athrow
    //   487: astore 56
    //   489: new 32	com/itrus/cryptorole/CryptoException
    //   492: dup
    //   493: aload 56
    //   495: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   498: astore 57
    //   500: aload 57
    //   502: athrow
    //   503: astore 54
    //   505: new 32	com/itrus/cryptorole/CryptoException
    //   508: dup
    //   509: aload 54
    //   511: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   514: astore 55
    //   516: aload 55
    //   518: athrow
    //   519: astore 9
    //   521: aload 5
    //   523: astore_3
    //   524: aconst_null
    //   525: astore 4
    //   527: goto -221 -> 306
    //   530: astore 9
    //   532: aload 6
    //   534: astore 4
    //   536: aload 5
    //   538: astore_3
    //   539: goto -233 -> 306
    //   542: astore 28
    //   544: aload 5
    //   546: astore_3
    //   547: aconst_null
    //   548: astore 4
    //   550: goto -109 -> 441
    //   553: astore 28
    //   555: aload 6
    //   557: astore 4
    //   559: aload 5
    //   561: astore_3
    //   562: goto -121 -> 441
    //   565: astore 26
    //   567: aload 5
    //   569: astore_3
    //   570: aconst_null
    //   571: astore 4
    //   573: goto -146 -> 427
    //   576: astore 26
    //   578: aload 6
    //   580: astore 4
    //   582: aload 5
    //   584: astore_3
    //   585: goto -158 -> 427
    //   588: astore 24
    //   590: aload 5
    //   592: astore_3
    //   593: aconst_null
    //   594: astore 4
    //   596: goto -183 -> 413
    //   599: astore 24
    //   601: aload 6
    //   603: astore 4
    //   605: aload 5
    //   607: astore_3
    //   608: goto -195 -> 413
    //   611: astore 22
    //   613: aload 5
    //   615: astore_3
    //   616: aconst_null
    //   617: astore 4
    //   619: goto -220 -> 399
    //   622: astore 22
    //   624: aload 6
    //   626: astore 4
    //   628: aload 5
    //   630: astore_3
    //   631: goto -232 -> 399
    //   634: astore 20
    //   636: aload 5
    //   638: astore_3
    //   639: aconst_null
    //   640: astore 4
    //   642: goto -257 -> 385
    //   645: astore 20
    //   647: aload 6
    //   649: astore 4
    //   651: aload 5
    //   653: astore_3
    //   654: goto -269 -> 385
    //   657: astore 18
    //   659: aload 5
    //   661: astore_3
    //   662: aconst_null
    //   663: astore 4
    //   665: goto -294 -> 371
    //   668: astore 18
    //   670: aload 6
    //   672: astore 4
    //   674: aload 5
    //   676: astore_3
    //   677: goto -306 -> 371
    //   680: astore 16
    //   682: aload 5
    //   684: astore_3
    //   685: aconst_null
    //   686: astore 4
    //   688: goto -331 -> 357
    //   691: astore 16
    //   693: aload 6
    //   695: astore 4
    //   697: aload 5
    //   699: astore_3
    //   700: goto -343 -> 357
    //   703: astore 14
    //   705: aload 5
    //   707: astore_3
    //   708: aconst_null
    //   709: astore 4
    //   711: goto -368 -> 343
    //   714: astore 14
    //   716: aload 6
    //   718: astore 4
    //   720: aload 5
    //   722: astore_3
    //   723: goto -380 -> 343
    //   726: astore 7
    //   728: aload 5
    //   730: astore_3
    //   731: aconst_null
    //   732: astore 4
    //   734: goto -405 -> 329
    //   737: astore 7
    //   739: aload 6
    //   741: astore 4
    //   743: aload 5
    //   745: astore_3
    //   746: goto -417 -> 329
    //   749: astore 30
    //   751: aconst_null
    //   752: astore_3
    //   753: aconst_null
    //   754: astore 4
    //   756: goto -466 -> 290
    //   759: astore 30
    //   761: aload 5
    //   763: astore_3
    //   764: aconst_null
    //   765: astore 4
    //   767: goto -477 -> 290
    //   770: astore 14
    //   772: aconst_null
    //   773: astore_3
    //   774: aconst_null
    //   775: astore 4
    //   777: goto -434 -> 343
    //   780: astore 16
    //   782: aconst_null
    //   783: astore_3
    //   784: aconst_null
    //   785: astore 4
    //   787: goto -430 -> 357
    //   790: astore 18
    //   792: aconst_null
    //   793: astore_3
    //   794: aconst_null
    //   795: astore 4
    //   797: goto -426 -> 371
    //   800: astore 20
    //   802: aconst_null
    //   803: astore_3
    //   804: aconst_null
    //   805: astore 4
    //   807: goto -422 -> 385
    //   810: astore 22
    //   812: aconst_null
    //   813: astore_3
    //   814: aconst_null
    //   815: astore 4
    //   817: goto -418 -> 399
    //   820: astore 24
    //   822: aconst_null
    //   823: astore_3
    //   824: aconst_null
    //   825: astore 4
    //   827: goto -414 -> 413
    //   830: astore 26
    //   832: aconst_null
    //   833: astore_3
    //   834: aconst_null
    //   835: astore 4
    //   837: goto -410 -> 427
    //   840: astore 28
    //   842: aconst_null
    //   843: astore_3
    //   844: aconst_null
    //   845: astore 4
    //   847: goto -406 -> 441
    //
    // Exception table:
    //   from	to	target	type
    //   25	217	281	java/io/FileNotFoundException
    //   217	226	281	java/io/FileNotFoundException
    //   232	242	281	java/io/FileNotFoundException
    //   263	278	281	java/io/FileNotFoundException
    //   5	15	304	finally
    //   290	304	304	finally
    //   329	343	304	finally
    //   343	357	304	finally
    //   357	371	304	finally
    //   371	385	304	finally
    //   385	399	304	finally
    //   399	413	304	finally
    //   413	427	304	finally
    //   427	441	304	finally
    //   441	455	304	finally
    //   5	15	327	java/io/IOException
    //   310	314	455	java/io/IOException
    //   319	324	471	java/io/IOException
    //   247	252	487	java/io/IOException
    //   257	262	503	java/io/IOException
    //   15	25	519	finally
    //   25	217	530	finally
    //   217	226	530	finally
    //   232	242	530	finally
    //   263	278	530	finally
    //   15	25	542	javax/crypto/BadPaddingException
    //   25	217	553	javax/crypto/BadPaddingException
    //   217	226	553	javax/crypto/BadPaddingException
    //   232	242	553	javax/crypto/BadPaddingException
    //   263	278	553	javax/crypto/BadPaddingException
    //   15	25	565	javax/crypto/IllegalBlockSizeException
    //   25	217	576	javax/crypto/IllegalBlockSizeException
    //   217	226	576	javax/crypto/IllegalBlockSizeException
    //   232	242	576	javax/crypto/IllegalBlockSizeException
    //   263	278	576	javax/crypto/IllegalBlockSizeException
    //   15	25	588	java/lang/IllegalStateException
    //   25	217	599	java/lang/IllegalStateException
    //   217	226	599	java/lang/IllegalStateException
    //   232	242	599	java/lang/IllegalStateException
    //   263	278	599	java/lang/IllegalStateException
    //   15	25	611	java/security/InvalidAlgorithmParameterException
    //   25	217	622	java/security/InvalidAlgorithmParameterException
    //   217	226	622	java/security/InvalidAlgorithmParameterException
    //   232	242	622	java/security/InvalidAlgorithmParameterException
    //   263	278	622	java/security/InvalidAlgorithmParameterException
    //   15	25	634	java/security/spec/InvalidKeySpecException
    //   25	217	645	java/security/spec/InvalidKeySpecException
    //   217	226	645	java/security/spec/InvalidKeySpecException
    //   232	242	645	java/security/spec/InvalidKeySpecException
    //   263	278	645	java/security/spec/InvalidKeySpecException
    //   15	25	657	java/security/InvalidKeyException
    //   25	217	668	java/security/InvalidKeyException
    //   217	226	668	java/security/InvalidKeyException
    //   232	242	668	java/security/InvalidKeyException
    //   263	278	668	java/security/InvalidKeyException
    //   15	25	680	javax/crypto/NoSuchPaddingException
    //   25	217	691	javax/crypto/NoSuchPaddingException
    //   217	226	691	javax/crypto/NoSuchPaddingException
    //   232	242	691	javax/crypto/NoSuchPaddingException
    //   263	278	691	javax/crypto/NoSuchPaddingException
    //   15	25	703	java/security/NoSuchAlgorithmException
    //   25	217	714	java/security/NoSuchAlgorithmException
    //   217	226	714	java/security/NoSuchAlgorithmException
    //   232	242	714	java/security/NoSuchAlgorithmException
    //   263	278	714	java/security/NoSuchAlgorithmException
    //   15	25	726	java/io/IOException
    //   25	217	737	java/io/IOException
    //   217	226	737	java/io/IOException
    //   232	242	737	java/io/IOException
    //   263	278	737	java/io/IOException
    //   5	15	749	java/io/FileNotFoundException
    //   15	25	759	java/io/FileNotFoundException
    //   5	15	770	java/security/NoSuchAlgorithmException
    //   5	15	780	javax/crypto/NoSuchPaddingException
    //   5	15	790	java/security/InvalidKeyException
    //   5	15	800	java/security/spec/InvalidKeySpecException
    //   5	15	810	java/security/InvalidAlgorithmParameterException
    //   5	15	820	java/lang/IllegalStateException
    //   5	15	830	javax/crypto/IllegalBlockSizeException
    //   5	15	840	javax/crypto/BadPaddingException
  }

  public void decryptFile(String paramString1, String paramString2)
    throws CryptoException, IOException
  {
    FileUtils.saveBytesToFile(decryptMessage(FileUtils.readBytesFromFile(paramString1)), paramString2);
  }

  // ERROR //
  public void decryptFileEx(String paramString1, String paramString2)
    throws CryptoException
  {
    // Byte code:
    //   0: aconst_null
    //   1: astore_3
    //   2: aconst_null
    //   3: astore 4
    //   5: new 54	java/io/FileInputStream
    //   8: dup
    //   9: aload_1
    //   10: invokespecial 57	java/io/FileInputStream:<init>	(Ljava/lang/String;)V
    //   13: astore 5
    //   15: new 59	java/io/FileOutputStream
    //   18: dup
    //   19: aload_2
    //   20: invokespecial 60	java/io/FileOutputStream:<init>	(Ljava/lang/String;)V
    //   23: astore 6
    //   25: iconst_1
    //   26: newarray byte
    //   28: astore 32
    //   30: sipush 10240
    //   33: newarray byte
    //   35: astore 33
    //   37: iconst_0
    //   38: istore 34
    //   40: aload 5
    //   42: aload 32
    //   44: iconst_0
    //   45: iconst_1
    //   46: invokevirtual 165	java/io/InputStream:read	([BII)I
    //   49: iconst_m1
    //   50: if_icmpne +260 -> 310
    //   53: new 62	java/lang/String
    //   56: dup
    //   57: aload 33
    //   59: iconst_0
    //   60: iload 34
    //   62: invokespecial 166	java/lang/String:<init>	([BII)V
    //   65: astore 35
    //   67: aload_0
    //   68: aload 35
    //   70: invokestatic 75	org/bouncycastle/util/encoders/Base64:decode	(Ljava/lang/String;)[B
    //   73: invokevirtual 157	com/itrus/cryptorole/bc/RecipientBcImpl:decryptMessage	([B)[B
    //   76: astore 36
    //   78: new 62	java/lang/String
    //   81: dup
    //   82: aload 36
    //   84: invokespecial 69	java/lang/String:<init>	([B)V
    //   87: astore 37
    //   89: aload 37
    //   91: invokestatic 75	org/bouncycastle/util/encoders/Base64:decode	(Ljava/lang/String;)[B
    //   94: astore 38
    //   96: aconst_null
    //   97: checkcast 77	[B
    //   100: pop
    //   101: aconst_null
    //   102: checkcast 77	[B
    //   105: pop
    //   106: new 62	java/lang/String
    //   109: dup
    //   110: aload 38
    //   112: invokespecial 69	java/lang/String:<init>	([B)V
    //   115: astore 41
    //   117: aload 41
    //   119: ldc 79
    //   121: invokevirtual 83	java/lang/String:indexOf	(Ljava/lang/String;)I
    //   124: istore 42
    //   126: aload 41
    //   128: iconst_0
    //   129: iload 42
    //   131: invokevirtual 87	java/lang/String:substring	(II)Ljava/lang/String;
    //   134: astore 43
    //   136: aload 41
    //   138: iload 42
    //   140: iconst_1
    //   141: iadd
    //   142: invokevirtual 90	java/lang/String:substring	(I)Ljava/lang/String;
    //   145: astore 44
    //   147: aload 43
    //   149: invokevirtual 66	java/lang/String:getBytes	()[B
    //   152: astore 45
    //   154: aload 44
    //   156: invokevirtual 66	java/lang/String:getBytes	()[B
    //   159: astore 46
    //   161: new 62	java/lang/String
    //   164: dup
    //   165: aload 45
    //   167: invokespecial 69	java/lang/String:<init>	([B)V
    //   170: astore 47
    //   172: aload 47
    //   174: invokestatic 75	org/bouncycastle/util/encoders/Base64:decode	(Ljava/lang/String;)[B
    //   177: astore 48
    //   179: new 62	java/lang/String
    //   182: dup
    //   183: aload 46
    //   185: invokespecial 69	java/lang/String:<init>	([B)V
    //   188: astore 49
    //   190: aload 49
    //   192: invokestatic 75	org/bouncycastle/util/encoders/Base64:decode	(Ljava/lang/String;)[B
    //   195: astore 50
    //   197: new 92	javax/crypto/spec/DESedeKeySpec
    //   200: dup
    //   201: aload 48
    //   203: invokespecial 93	javax/crypto/spec/DESedeKeySpec:<init>	([B)V
    //   206: astore 51
    //   208: ldc 95
    //   210: invokestatic 101	javax/crypto/SecretKeyFactory:getInstance	(Ljava/lang/String;)Ljavax/crypto/SecretKeyFactory;
    //   213: aload 51
    //   215: invokevirtual 105	javax/crypto/SecretKeyFactory:generateSecret	(Ljava/security/spec/KeySpec;)Ljavax/crypto/SecretKey;
    //   218: astore 52
    //   220: new 107	javax/crypto/spec/IvParameterSpec
    //   223: dup
    //   224: aload 50
    //   226: iconst_0
    //   227: bipush 8
    //   229: invokespecial 110	javax/crypto/spec/IvParameterSpec:<init>	([BII)V
    //   232: astore 53
    //   234: ldc 112
    //   236: invokestatic 117	javax/crypto/Cipher:getInstance	(Ljava/lang/String;)Ljavax/crypto/Cipher;
    //   239: astore 54
    //   241: aload 54
    //   243: iconst_2
    //   244: aload 52
    //   246: aload 53
    //   248: aconst_null
    //   249: invokevirtual 121	javax/crypto/Cipher:init	(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
    //   252: sipush 10240
    //   255: newarray byte
    //   257: astore 55
    //   259: aconst_null
    //   260: checkcast 77	[B
    //   263: pop
    //   264: aload 5
    //   266: aload 55
    //   268: invokevirtual 127	java/io/InputStream:read	([B)I
    //   271: istore 57
    //   273: iload 57
    //   275: iconst_m1
    //   276: if_icmpne +132 -> 408
    //   279: aload 6
    //   281: aload 54
    //   283: invokevirtual 130	javax/crypto/Cipher:doFinal	()[B
    //   286: invokevirtual 135	java/io/OutputStream:write	([B)V
    //   289: aload 5
    //   291: ifnull +8 -> 299
    //   294: aload 5
    //   296: invokevirtual 138	java/io/InputStream:close	()V
    //   299: aload 6
    //   301: ifnull +8 -> 309
    //   304: aload 6
    //   306: invokevirtual 139	java/io/OutputStream:close	()V
    //   309: return
    //   310: new 62	java/lang/String
    //   313: dup
    //   314: aload 32
    //   316: invokespecial 69	java/lang/String:<init>	([B)V
    //   319: astore 62
    //   321: aload 62
    //   323: ldc 79
    //   325: invokevirtual 169	java/lang/String:compareToIgnoreCase	(Ljava/lang/String;)I
    //   328: ifeq +25 -> 353
    //   331: iload 34
    //   333: iconst_1
    //   334: iadd
    //   335: istore 63
    //   337: aload 33
    //   339: iload 34
    //   341: aload 32
    //   343: iconst_0
    //   344: baload
    //   345: bastore
    //   346: iload 63
    //   348: istore 34
    //   350: goto -310 -> 40
    //   353: aload 33
    //   355: iload 34
    //   357: iconst_0
    //   358: bastore
    //   359: goto -306 -> 53
    //   362: astore 30
    //   364: aload 6
    //   366: astore 4
    //   368: aload 5
    //   370: astore_3
    //   371: new 32	com/itrus/cryptorole/CryptoException
    //   374: dup
    //   375: aload 30
    //   377: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   380: astore 31
    //   382: aload 31
    //   384: athrow
    //   385: astore 9
    //   387: aload_3
    //   388: ifnull +7 -> 395
    //   391: aload_3
    //   392: invokevirtual 138	java/io/InputStream:close	()V
    //   395: aload 4
    //   397: ifnull +8 -> 405
    //   400: aload 4
    //   402: invokevirtual 139	java/io/OutputStream:close	()V
    //   405: aload 9
    //   407: athrow
    //   408: aload 6
    //   410: aload 54
    //   412: aload 55
    //   414: iconst_0
    //   415: iload 57
    //   417: invokevirtual 143	javax/crypto/Cipher:update	([BII)[B
    //   420: invokevirtual 135	java/io/OutputStream:write	([B)V
    //   423: goto -159 -> 264
    //   426: astore 28
    //   428: aload 6
    //   430: astore 4
    //   432: aload 5
    //   434: astore_3
    //   435: new 32	com/itrus/cryptorole/CryptoException
    //   438: dup
    //   439: aload 28
    //   441: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   444: astore 29
    //   446: aload 29
    //   448: athrow
    //   449: new 32	com/itrus/cryptorole/CryptoException
    //   452: dup
    //   453: aload 7
    //   455: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   458: astore 8
    //   460: aload 8
    //   462: athrow
    //   463: new 32	com/itrus/cryptorole/CryptoException
    //   466: dup
    //   467: aload 14
    //   469: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   472: astore 15
    //   474: aload 15
    //   476: athrow
    //   477: new 32	com/itrus/cryptorole/CryptoException
    //   480: dup
    //   481: aload 16
    //   483: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   486: astore 17
    //   488: aload 17
    //   490: athrow
    //   491: new 32	com/itrus/cryptorole/CryptoException
    //   494: dup
    //   495: aload 18
    //   497: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   500: astore 19
    //   502: aload 19
    //   504: athrow
    //   505: new 32	com/itrus/cryptorole/CryptoException
    //   508: dup
    //   509: aload 20
    //   511: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   514: astore 21
    //   516: aload 21
    //   518: athrow
    //   519: new 32	com/itrus/cryptorole/CryptoException
    //   522: dup
    //   523: aload 22
    //   525: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   528: astore 23
    //   530: aload 23
    //   532: athrow
    //   533: new 32	com/itrus/cryptorole/CryptoException
    //   536: dup
    //   537: aload 24
    //   539: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   542: astore 25
    //   544: aload 25
    //   546: athrow
    //   547: new 32	com/itrus/cryptorole/CryptoException
    //   550: dup
    //   551: aload 26
    //   553: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   556: astore 27
    //   558: aload 27
    //   560: athrow
    //   561: astore 12
    //   563: new 32	com/itrus/cryptorole/CryptoException
    //   566: dup
    //   567: aload 12
    //   569: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   572: astore 13
    //   574: aload 13
    //   576: athrow
    //   577: astore 10
    //   579: new 32	com/itrus/cryptorole/CryptoException
    //   582: dup
    //   583: aload 10
    //   585: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   588: astore 11
    //   590: aload 11
    //   592: athrow
    //   593: astore 60
    //   595: new 32	com/itrus/cryptorole/CryptoException
    //   598: dup
    //   599: aload 60
    //   601: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   604: astore 61
    //   606: aload 61
    //   608: athrow
    //   609: astore 58
    //   611: new 32	com/itrus/cryptorole/CryptoException
    //   614: dup
    //   615: aload 58
    //   617: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   620: astore 59
    //   622: aload 59
    //   624: athrow
    //   625: astore 9
    //   627: aload 5
    //   629: astore_3
    //   630: aconst_null
    //   631: astore 4
    //   633: goto -246 -> 387
    //   636: astore 9
    //   638: aload 6
    //   640: astore 4
    //   642: aload 5
    //   644: astore_3
    //   645: goto -258 -> 387
    //   648: astore 26
    //   650: aload 5
    //   652: astore_3
    //   653: aconst_null
    //   654: astore 4
    //   656: goto -109 -> 547
    //   659: astore 26
    //   661: aload 6
    //   663: astore 4
    //   665: aload 5
    //   667: astore_3
    //   668: goto -121 -> 547
    //   671: astore 24
    //   673: aload 5
    //   675: astore_3
    //   676: aconst_null
    //   677: astore 4
    //   679: goto -146 -> 533
    //   682: astore 24
    //   684: aload 6
    //   686: astore 4
    //   688: aload 5
    //   690: astore_3
    //   691: goto -158 -> 533
    //   694: astore 22
    //   696: aload 5
    //   698: astore_3
    //   699: aconst_null
    //   700: astore 4
    //   702: goto -183 -> 519
    //   705: astore 22
    //   707: aload 6
    //   709: astore 4
    //   711: aload 5
    //   713: astore_3
    //   714: goto -195 -> 519
    //   717: astore 20
    //   719: aload 5
    //   721: astore_3
    //   722: aconst_null
    //   723: astore 4
    //   725: goto -220 -> 505
    //   728: astore 20
    //   730: aload 6
    //   732: astore 4
    //   734: aload 5
    //   736: astore_3
    //   737: goto -232 -> 505
    //   740: astore 18
    //   742: aload 5
    //   744: astore_3
    //   745: aconst_null
    //   746: astore 4
    //   748: goto -257 -> 491
    //   751: astore 18
    //   753: aload 6
    //   755: astore 4
    //   757: aload 5
    //   759: astore_3
    //   760: goto -269 -> 491
    //   763: astore 16
    //   765: aload 5
    //   767: astore_3
    //   768: aconst_null
    //   769: astore 4
    //   771: goto -294 -> 477
    //   774: astore 16
    //   776: aload 6
    //   778: astore 4
    //   780: aload 5
    //   782: astore_3
    //   783: goto -306 -> 477
    //   786: astore 14
    //   788: aload 5
    //   790: astore_3
    //   791: aconst_null
    //   792: astore 4
    //   794: goto -331 -> 463
    //   797: astore 14
    //   799: aload 6
    //   801: astore 4
    //   803: aload 5
    //   805: astore_3
    //   806: goto -343 -> 463
    //   809: astore 7
    //   811: aload 5
    //   813: astore_3
    //   814: aconst_null
    //   815: astore 4
    //   817: goto -368 -> 449
    //   820: astore 7
    //   822: aload 6
    //   824: astore 4
    //   826: aload 5
    //   828: astore_3
    //   829: goto -380 -> 449
    //   832: astore 28
    //   834: aconst_null
    //   835: astore_3
    //   836: aconst_null
    //   837: astore 4
    //   839: goto -404 -> 435
    //   842: astore 28
    //   844: aload 5
    //   846: astore_3
    //   847: aconst_null
    //   848: astore 4
    //   850: goto -415 -> 435
    //   853: astore 30
    //   855: aconst_null
    //   856: astore_3
    //   857: aconst_null
    //   858: astore 4
    //   860: goto -489 -> 371
    //   863: astore 30
    //   865: aload 5
    //   867: astore_3
    //   868: aconst_null
    //   869: astore 4
    //   871: goto -500 -> 371
    //   874: astore 7
    //   876: aconst_null
    //   877: astore_3
    //   878: aconst_null
    //   879: astore 4
    //   881: goto -432 -> 449
    //   884: astore 14
    //   886: aconst_null
    //   887: astore_3
    //   888: aconst_null
    //   889: astore 4
    //   891: goto -428 -> 463
    //   894: astore 16
    //   896: aconst_null
    //   897: astore_3
    //   898: aconst_null
    //   899: astore 4
    //   901: goto -424 -> 477
    //   904: astore 18
    //   906: aconst_null
    //   907: astore_3
    //   908: aconst_null
    //   909: astore 4
    //   911: goto -420 -> 491
    //   914: astore 20
    //   916: aconst_null
    //   917: astore_3
    //   918: aconst_null
    //   919: astore 4
    //   921: goto -416 -> 505
    //   924: astore 22
    //   926: aconst_null
    //   927: astore_3
    //   928: aconst_null
    //   929: astore 4
    //   931: goto -412 -> 519
    //   934: astore 24
    //   936: aconst_null
    //   937: astore_3
    //   938: aconst_null
    //   939: astore 4
    //   941: goto -408 -> 533
    //   944: astore 26
    //   946: aconst_null
    //   947: astore_3
    //   948: aconst_null
    //   949: astore 4
    //   951: goto -404 -> 547
    //
    // Exception table:
    //   from	to	target	type
    //   25	37	362	java/io/FileNotFoundException
    //   40	53	362	java/io/FileNotFoundException
    //   53	264	362	java/io/FileNotFoundException
    //   264	273	362	java/io/FileNotFoundException
    //   279	289	362	java/io/FileNotFoundException
    //   310	331	362	java/io/FileNotFoundException
    //   337	346	362	java/io/FileNotFoundException
    //   353	359	362	java/io/FileNotFoundException
    //   408	423	362	java/io/FileNotFoundException
    //   5	15	385	finally
    //   371	385	385	finally
    //   435	449	385	finally
    //   449	463	385	finally
    //   463	477	385	finally
    //   477	491	385	finally
    //   491	505	385	finally
    //   505	519	385	finally
    //   519	533	385	finally
    //   533	547	385	finally
    //   547	561	385	finally
    //   25	37	426	java/io/IOException
    //   40	53	426	java/io/IOException
    //   53	264	426	java/io/IOException
    //   264	273	426	java/io/IOException
    //   279	289	426	java/io/IOException
    //   310	331	426	java/io/IOException
    //   337	346	426	java/io/IOException
    //   353	359	426	java/io/IOException
    //   408	423	426	java/io/IOException
    //   391	395	561	java/io/IOException
    //   400	405	577	java/io/IOException
    //   294	299	593	java/io/IOException
    //   304	309	609	java/io/IOException
    //   15	25	625	finally
    //   25	37	636	finally
    //   40	53	636	finally
    //   53	264	636	finally
    //   264	273	636	finally
    //   279	289	636	finally
    //   310	331	636	finally
    //   337	346	636	finally
    //   353	359	636	finally
    //   408	423	636	finally
    //   15	25	648	javax/crypto/BadPaddingException
    //   25	37	659	javax/crypto/BadPaddingException
    //   40	53	659	javax/crypto/BadPaddingException
    //   53	264	659	javax/crypto/BadPaddingException
    //   264	273	659	javax/crypto/BadPaddingException
    //   279	289	659	javax/crypto/BadPaddingException
    //   310	331	659	javax/crypto/BadPaddingException
    //   337	346	659	javax/crypto/BadPaddingException
    //   353	359	659	javax/crypto/BadPaddingException
    //   408	423	659	javax/crypto/BadPaddingException
    //   15	25	671	javax/crypto/IllegalBlockSizeException
    //   25	37	682	javax/crypto/IllegalBlockSizeException
    //   40	53	682	javax/crypto/IllegalBlockSizeException
    //   53	264	682	javax/crypto/IllegalBlockSizeException
    //   264	273	682	javax/crypto/IllegalBlockSizeException
    //   279	289	682	javax/crypto/IllegalBlockSizeException
    //   310	331	682	javax/crypto/IllegalBlockSizeException
    //   337	346	682	javax/crypto/IllegalBlockSizeException
    //   353	359	682	javax/crypto/IllegalBlockSizeException
    //   408	423	682	javax/crypto/IllegalBlockSizeException
    //   15	25	694	java/lang/IllegalStateException
    //   25	37	705	java/lang/IllegalStateException
    //   40	53	705	java/lang/IllegalStateException
    //   53	264	705	java/lang/IllegalStateException
    //   264	273	705	java/lang/IllegalStateException
    //   279	289	705	java/lang/IllegalStateException
    //   310	331	705	java/lang/IllegalStateException
    //   337	346	705	java/lang/IllegalStateException
    //   353	359	705	java/lang/IllegalStateException
    //   408	423	705	java/lang/IllegalStateException
    //   15	25	717	java/security/InvalidAlgorithmParameterException
    //   25	37	728	java/security/InvalidAlgorithmParameterException
    //   40	53	728	java/security/InvalidAlgorithmParameterException
    //   53	264	728	java/security/InvalidAlgorithmParameterException
    //   264	273	728	java/security/InvalidAlgorithmParameterException
    //   279	289	728	java/security/InvalidAlgorithmParameterException
    //   310	331	728	java/security/InvalidAlgorithmParameterException
    //   337	346	728	java/security/InvalidAlgorithmParameterException
    //   353	359	728	java/security/InvalidAlgorithmParameterException
    //   408	423	728	java/security/InvalidAlgorithmParameterException
    //   15	25	740	java/security/spec/InvalidKeySpecException
    //   25	37	751	java/security/spec/InvalidKeySpecException
    //   40	53	751	java/security/spec/InvalidKeySpecException
    //   53	264	751	java/security/spec/InvalidKeySpecException
    //   264	273	751	java/security/spec/InvalidKeySpecException
    //   279	289	751	java/security/spec/InvalidKeySpecException
    //   310	331	751	java/security/spec/InvalidKeySpecException
    //   337	346	751	java/security/spec/InvalidKeySpecException
    //   353	359	751	java/security/spec/InvalidKeySpecException
    //   408	423	751	java/security/spec/InvalidKeySpecException
    //   15	25	763	java/security/InvalidKeyException
    //   25	37	774	java/security/InvalidKeyException
    //   40	53	774	java/security/InvalidKeyException
    //   53	264	774	java/security/InvalidKeyException
    //   264	273	774	java/security/InvalidKeyException
    //   279	289	774	java/security/InvalidKeyException
    //   310	331	774	java/security/InvalidKeyException
    //   337	346	774	java/security/InvalidKeyException
    //   353	359	774	java/security/InvalidKeyException
    //   408	423	774	java/security/InvalidKeyException
    //   15	25	786	javax/crypto/NoSuchPaddingException
    //   25	37	797	javax/crypto/NoSuchPaddingException
    //   40	53	797	javax/crypto/NoSuchPaddingException
    //   53	264	797	javax/crypto/NoSuchPaddingException
    //   264	273	797	javax/crypto/NoSuchPaddingException
    //   279	289	797	javax/crypto/NoSuchPaddingException
    //   310	331	797	javax/crypto/NoSuchPaddingException
    //   337	346	797	javax/crypto/NoSuchPaddingException
    //   353	359	797	javax/crypto/NoSuchPaddingException
    //   408	423	797	javax/crypto/NoSuchPaddingException
    //   15	25	809	java/security/NoSuchAlgorithmException
    //   25	37	820	java/security/NoSuchAlgorithmException
    //   40	53	820	java/security/NoSuchAlgorithmException
    //   53	264	820	java/security/NoSuchAlgorithmException
    //   264	273	820	java/security/NoSuchAlgorithmException
    //   279	289	820	java/security/NoSuchAlgorithmException
    //   310	331	820	java/security/NoSuchAlgorithmException
    //   337	346	820	java/security/NoSuchAlgorithmException
    //   353	359	820	java/security/NoSuchAlgorithmException
    //   408	423	820	java/security/NoSuchAlgorithmException
    //   5	15	832	java/io/IOException
    //   15	25	842	java/io/IOException
    //   5	15	853	java/io/FileNotFoundException
    //   15	25	863	java/io/FileNotFoundException
    //   5	15	874	java/security/NoSuchAlgorithmException
    //   5	15	884	javax/crypto/NoSuchPaddingException
    //   5	15	894	java/security/InvalidKeyException
    //   5	15	904	java/security/spec/InvalidKeySpecException
    //   5	15	914	java/security/InvalidAlgorithmParameterException
    //   5	15	924	java/lang/IllegalStateException
    //   5	15	934	javax/crypto/IllegalBlockSizeException
    //   5	15	944	javax/crypto/BadPaddingException
  }

  // ERROR //
  public void decryptFileWithHeader(String paramString1, String paramString2, String paramString3)
    throws CryptoException
  {
    // Byte code:
    //   0: aconst_null
    //   1: astore 4
    //   3: aconst_null
    //   4: astore 5
    //   6: new 54	java/io/FileInputStream
    //   9: dup
    //   10: aload_2
    //   11: invokespecial 57	java/io/FileInputStream:<init>	(Ljava/lang/String;)V
    //   14: astore 6
    //   16: new 59	java/io/FileOutputStream
    //   19: dup
    //   20: aload_3
    //   21: invokespecial 60	java/io/FileOutputStream:<init>	(Ljava/lang/String;)V
    //   24: astore 7
    //   26: iconst_1
    //   27: newarray byte
    //   29: astore 33
    //   31: aload 6
    //   33: aload 33
    //   35: iconst_0
    //   36: iconst_1
    //   37: invokevirtual 165	java/io/InputStream:read	([BII)I
    //   40: istore 34
    //   42: iconst_0
    //   43: istore 35
    //   45: iload 34
    //   47: iconst_m1
    //   48: if_icmpne +67 -> 115
    //   51: iload 35
    //   53: ifne +89 -> 142
    //   56: new 32	com/itrus/cryptorole/CryptoException
    //   59: dup
    //   60: ldc 172
    //   62: invokespecial 173	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/String;)V
    //   65: athrow
    //   66: astore 31
    //   68: aload 7
    //   70: astore 5
    //   72: aload 6
    //   74: astore 4
    //   76: new 32	com/itrus/cryptorole/CryptoException
    //   79: dup
    //   80: aload 31
    //   82: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   85: astore 32
    //   87: aload 32
    //   89: athrow
    //   90: astore 10
    //   92: aload 4
    //   94: ifnull +8 -> 102
    //   97: aload 4
    //   99: invokevirtual 138	java/io/InputStream:close	()V
    //   102: aload 5
    //   104: ifnull +8 -> 112
    //   107: aload 5
    //   109: invokevirtual 139	java/io/OutputStream:close	()V
    //   112: aload 10
    //   114: athrow
    //   115: new 62	java/lang/String
    //   118: dup
    //   119: aload 33
    //   121: invokespecial 69	java/lang/String:<init>	([B)V
    //   124: astore 36
    //   126: aload 36
    //   128: ldc 79
    //   130: invokevirtual 169	java/lang/String:compareToIgnoreCase	(Ljava/lang/String;)I
    //   133: ifne -102 -> 31
    //   136: iconst_1
    //   137: istore 35
    //   139: goto -88 -> 51
    //   142: aload_1
    //   143: invokevirtual 66	java/lang/String:getBytes	()[B
    //   146: astore 37
    //   148: new 62	java/lang/String
    //   151: dup
    //   152: aload 37
    //   154: invokespecial 69	java/lang/String:<init>	([B)V
    //   157: astore 38
    //   159: aload 38
    //   161: invokestatic 75	org/bouncycastle/util/encoders/Base64:decode	(Ljava/lang/String;)[B
    //   164: astore 39
    //   166: aconst_null
    //   167: checkcast 77	[B
    //   170: pop
    //   171: aconst_null
    //   172: checkcast 77	[B
    //   175: pop
    //   176: new 62	java/lang/String
    //   179: dup
    //   180: aload 39
    //   182: invokespecial 69	java/lang/String:<init>	([B)V
    //   185: astore 42
    //   187: aload 42
    //   189: ldc 79
    //   191: invokevirtual 83	java/lang/String:indexOf	(Ljava/lang/String;)I
    //   194: istore 43
    //   196: aload 42
    //   198: iconst_0
    //   199: iload 43
    //   201: invokevirtual 87	java/lang/String:substring	(II)Ljava/lang/String;
    //   204: astore 44
    //   206: aload 42
    //   208: iload 43
    //   210: iconst_1
    //   211: iadd
    //   212: invokevirtual 90	java/lang/String:substring	(I)Ljava/lang/String;
    //   215: astore 45
    //   217: aload 44
    //   219: invokevirtual 66	java/lang/String:getBytes	()[B
    //   222: astore 46
    //   224: aload 45
    //   226: invokevirtual 66	java/lang/String:getBytes	()[B
    //   229: astore 47
    //   231: new 62	java/lang/String
    //   234: dup
    //   235: aload 46
    //   237: invokespecial 69	java/lang/String:<init>	([B)V
    //   240: astore 48
    //   242: aload 48
    //   244: invokestatic 75	org/bouncycastle/util/encoders/Base64:decode	(Ljava/lang/String;)[B
    //   247: astore 49
    //   249: new 62	java/lang/String
    //   252: dup
    //   253: aload 47
    //   255: invokespecial 69	java/lang/String:<init>	([B)V
    //   258: astore 50
    //   260: aload 50
    //   262: invokestatic 75	org/bouncycastle/util/encoders/Base64:decode	(Ljava/lang/String;)[B
    //   265: astore 51
    //   267: new 92	javax/crypto/spec/DESedeKeySpec
    //   270: dup
    //   271: aload 49
    //   273: invokespecial 93	javax/crypto/spec/DESedeKeySpec:<init>	([B)V
    //   276: astore 52
    //   278: ldc 95
    //   280: invokestatic 101	javax/crypto/SecretKeyFactory:getInstance	(Ljava/lang/String;)Ljavax/crypto/SecretKeyFactory;
    //   283: aload 52
    //   285: invokevirtual 105	javax/crypto/SecretKeyFactory:generateSecret	(Ljava/security/spec/KeySpec;)Ljavax/crypto/SecretKey;
    //   288: astore 53
    //   290: new 107	javax/crypto/spec/IvParameterSpec
    //   293: dup
    //   294: aload 51
    //   296: iconst_0
    //   297: bipush 8
    //   299: invokespecial 110	javax/crypto/spec/IvParameterSpec:<init>	([BII)V
    //   302: astore 54
    //   304: ldc 112
    //   306: invokestatic 117	javax/crypto/Cipher:getInstance	(Ljava/lang/String;)Ljavax/crypto/Cipher;
    //   309: astore 55
    //   311: aload 55
    //   313: iconst_2
    //   314: aload 53
    //   316: aload 54
    //   318: aconst_null
    //   319: invokevirtual 121	javax/crypto/Cipher:init	(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
    //   322: sipush 10240
    //   325: newarray byte
    //   327: astore 56
    //   329: aconst_null
    //   330: checkcast 77	[B
    //   333: pop
    //   334: aload 6
    //   336: aload 56
    //   338: invokevirtual 127	java/io/InputStream:read	([B)I
    //   341: istore 58
    //   343: iload 58
    //   345: iconst_m1
    //   346: if_icmpne +34 -> 380
    //   349: aload 7
    //   351: aload 55
    //   353: invokevirtual 130	javax/crypto/Cipher:doFinal	()[B
    //   356: invokevirtual 135	java/io/OutputStream:write	([B)V
    //   359: aload 6
    //   361: ifnull +8 -> 369
    //   364: aload 6
    //   366: invokevirtual 138	java/io/InputStream:close	()V
    //   369: aload 7
    //   371: ifnull +8 -> 379
    //   374: aload 7
    //   376: invokevirtual 139	java/io/OutputStream:close	()V
    //   379: return
    //   380: aload 7
    //   382: aload 55
    //   384: aload 56
    //   386: iconst_0
    //   387: iload 58
    //   389: invokevirtual 143	javax/crypto/Cipher:update	([BII)[B
    //   392: invokevirtual 135	java/io/OutputStream:write	([B)V
    //   395: goto -61 -> 334
    //   398: astore 29
    //   400: aload 7
    //   402: astore 5
    //   404: aload 6
    //   406: astore 4
    //   408: new 32	com/itrus/cryptorole/CryptoException
    //   411: dup
    //   412: aload 29
    //   414: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   417: astore 30
    //   419: aload 30
    //   421: athrow
    //   422: new 32	com/itrus/cryptorole/CryptoException
    //   425: dup
    //   426: aload 8
    //   428: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   431: astore 9
    //   433: aload 9
    //   435: athrow
    //   436: new 32	com/itrus/cryptorole/CryptoException
    //   439: dup
    //   440: aload 15
    //   442: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   445: astore 16
    //   447: aload 16
    //   449: athrow
    //   450: new 32	com/itrus/cryptorole/CryptoException
    //   453: dup
    //   454: aload 17
    //   456: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   459: astore 18
    //   461: aload 18
    //   463: athrow
    //   464: new 32	com/itrus/cryptorole/CryptoException
    //   467: dup
    //   468: aload 19
    //   470: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   473: astore 20
    //   475: aload 20
    //   477: athrow
    //   478: new 32	com/itrus/cryptorole/CryptoException
    //   481: dup
    //   482: aload 21
    //   484: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   487: astore 22
    //   489: aload 22
    //   491: athrow
    //   492: new 32	com/itrus/cryptorole/CryptoException
    //   495: dup
    //   496: aload 23
    //   498: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   501: astore 24
    //   503: aload 24
    //   505: athrow
    //   506: new 32	com/itrus/cryptorole/CryptoException
    //   509: dup
    //   510: aload 25
    //   512: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   515: astore 26
    //   517: aload 26
    //   519: athrow
    //   520: new 32	com/itrus/cryptorole/CryptoException
    //   523: dup
    //   524: aload 27
    //   526: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   529: astore 28
    //   531: aload 28
    //   533: athrow
    //   534: astore 13
    //   536: new 32	com/itrus/cryptorole/CryptoException
    //   539: dup
    //   540: aload 13
    //   542: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   545: astore 14
    //   547: aload 14
    //   549: athrow
    //   550: astore 11
    //   552: new 32	com/itrus/cryptorole/CryptoException
    //   555: dup
    //   556: aload 11
    //   558: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   561: astore 12
    //   563: aload 12
    //   565: athrow
    //   566: astore 61
    //   568: new 32	com/itrus/cryptorole/CryptoException
    //   571: dup
    //   572: aload 61
    //   574: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   577: astore 62
    //   579: aload 62
    //   581: athrow
    //   582: astore 59
    //   584: new 32	com/itrus/cryptorole/CryptoException
    //   587: dup
    //   588: aload 59
    //   590: invokespecial 146	com/itrus/cryptorole/CryptoException:<init>	(Ljava/lang/Throwable;)V
    //   593: astore 60
    //   595: aload 60
    //   597: athrow
    //   598: astore 10
    //   600: aload 6
    //   602: astore 4
    //   604: aconst_null
    //   605: astore 5
    //   607: goto -515 -> 92
    //   610: astore 10
    //   612: aload 7
    //   614: astore 5
    //   616: aload 6
    //   618: astore 4
    //   620: goto -528 -> 92
    //   623: astore 27
    //   625: aload 6
    //   627: astore 4
    //   629: aconst_null
    //   630: astore 5
    //   632: goto -112 -> 520
    //   635: astore 27
    //   637: aload 7
    //   639: astore 5
    //   641: aload 6
    //   643: astore 4
    //   645: goto -125 -> 520
    //   648: astore 25
    //   650: aload 6
    //   652: astore 4
    //   654: aconst_null
    //   655: astore 5
    //   657: goto -151 -> 506
    //   660: astore 25
    //   662: aload 7
    //   664: astore 5
    //   666: aload 6
    //   668: astore 4
    //   670: goto -164 -> 506
    //   673: astore 23
    //   675: aload 6
    //   677: astore 4
    //   679: aconst_null
    //   680: astore 5
    //   682: goto -190 -> 492
    //   685: astore 23
    //   687: aload 7
    //   689: astore 5
    //   691: aload 6
    //   693: astore 4
    //   695: goto -203 -> 492
    //   698: astore 21
    //   700: aload 6
    //   702: astore 4
    //   704: aconst_null
    //   705: astore 5
    //   707: goto -229 -> 478
    //   710: astore 21
    //   712: aload 7
    //   714: astore 5
    //   716: aload 6
    //   718: astore 4
    //   720: goto -242 -> 478
    //   723: astore 19
    //   725: aload 6
    //   727: astore 4
    //   729: aconst_null
    //   730: astore 5
    //   732: goto -268 -> 464
    //   735: astore 19
    //   737: aload 7
    //   739: astore 5
    //   741: aload 6
    //   743: astore 4
    //   745: goto -281 -> 464
    //   748: astore 17
    //   750: aload 6
    //   752: astore 4
    //   754: aconst_null
    //   755: astore 5
    //   757: goto -307 -> 450
    //   760: astore 17
    //   762: aload 7
    //   764: astore 5
    //   766: aload 6
    //   768: astore 4
    //   770: goto -320 -> 450
    //   773: astore 15
    //   775: aload 6
    //   777: astore 4
    //   779: aconst_null
    //   780: astore 5
    //   782: goto -346 -> 436
    //   785: astore 15
    //   787: aload 7
    //   789: astore 5
    //   791: aload 6
    //   793: astore 4
    //   795: goto -359 -> 436
    //   798: astore 8
    //   800: aload 6
    //   802: astore 4
    //   804: aconst_null
    //   805: astore 5
    //   807: goto -385 -> 422
    //   810: astore 8
    //   812: aload 7
    //   814: astore 5
    //   816: aload 6
    //   818: astore 4
    //   820: goto -398 -> 422
    //   823: astore 29
    //   825: aconst_null
    //   826: astore 4
    //   828: aconst_null
    //   829: astore 5
    //   831: goto -423 -> 408
    //   834: astore 29
    //   836: aload 6
    //   838: astore 4
    //   840: aconst_null
    //   841: astore 5
    //   843: goto -435 -> 408
    //   846: astore 31
    //   848: aconst_null
    //   849: astore 4
    //   851: aconst_null
    //   852: astore 5
    //   854: goto -778 -> 76
    //   857: astore 31
    //   859: aload 6
    //   861: astore 4
    //   863: aconst_null
    //   864: astore 5
    //   866: goto -790 -> 76
    //   869: astore 8
    //   871: aconst_null
    //   872: astore 4
    //   874: aconst_null
    //   875: astore 5
    //   877: goto -455 -> 422
    //   880: astore 15
    //   882: aconst_null
    //   883: astore 4
    //   885: aconst_null
    //   886: astore 5
    //   888: goto -452 -> 436
    //   891: astore 17
    //   893: aconst_null
    //   894: astore 4
    //   896: aconst_null
    //   897: astore 5
    //   899: goto -449 -> 450
    //   902: astore 19
    //   904: aconst_null
    //   905: astore 4
    //   907: aconst_null
    //   908: astore 5
    //   910: goto -446 -> 464
    //   913: astore 21
    //   915: aconst_null
    //   916: astore 4
    //   918: aconst_null
    //   919: astore 5
    //   921: goto -443 -> 478
    //   924: astore 23
    //   926: aconst_null
    //   927: astore 4
    //   929: aconst_null
    //   930: astore 5
    //   932: goto -440 -> 492
    //   935: astore 25
    //   937: aconst_null
    //   938: astore 4
    //   940: aconst_null
    //   941: astore 5
    //   943: goto -437 -> 506
    //   946: astore 27
    //   948: aconst_null
    //   949: astore 4
    //   951: aconst_null
    //   952: astore 5
    //   954: goto -434 -> 520
    //
    // Exception table:
    //   from	to	target	type
    //   26	31	66	java/io/FileNotFoundException
    //   31	42	66	java/io/FileNotFoundException
    //   56	66	66	java/io/FileNotFoundException
    //   115	136	66	java/io/FileNotFoundException
    //   142	334	66	java/io/FileNotFoundException
    //   334	343	66	java/io/FileNotFoundException
    //   349	359	66	java/io/FileNotFoundException
    //   380	395	66	java/io/FileNotFoundException
    //   6	16	90	finally
    //   76	90	90	finally
    //   408	422	90	finally
    //   422	436	90	finally
    //   436	450	90	finally
    //   450	464	90	finally
    //   464	478	90	finally
    //   478	492	90	finally
    //   492	506	90	finally
    //   506	520	90	finally
    //   520	534	90	finally
    //   26	31	398	java/io/IOException
    //   31	42	398	java/io/IOException
    //   56	66	398	java/io/IOException
    //   115	136	398	java/io/IOException
    //   142	334	398	java/io/IOException
    //   334	343	398	java/io/IOException
    //   349	359	398	java/io/IOException
    //   380	395	398	java/io/IOException
    //   97	102	534	java/io/IOException
    //   107	112	550	java/io/IOException
    //   364	369	566	java/io/IOException
    //   374	379	582	java/io/IOException
    //   16	26	598	finally
    //   26	31	610	finally
    //   31	42	610	finally
    //   56	66	610	finally
    //   115	136	610	finally
    //   142	334	610	finally
    //   334	343	610	finally
    //   349	359	610	finally
    //   380	395	610	finally
    //   16	26	623	javax/crypto/BadPaddingException
    //   26	31	635	javax/crypto/BadPaddingException
    //   31	42	635	javax/crypto/BadPaddingException
    //   56	66	635	javax/crypto/BadPaddingException
    //   115	136	635	javax/crypto/BadPaddingException
    //   142	334	635	javax/crypto/BadPaddingException
    //   334	343	635	javax/crypto/BadPaddingException
    //   349	359	635	javax/crypto/BadPaddingException
    //   380	395	635	javax/crypto/BadPaddingException
    //   16	26	648	javax/crypto/IllegalBlockSizeException
    //   26	31	660	javax/crypto/IllegalBlockSizeException
    //   31	42	660	javax/crypto/IllegalBlockSizeException
    //   56	66	660	javax/crypto/IllegalBlockSizeException
    //   115	136	660	javax/crypto/IllegalBlockSizeException
    //   142	334	660	javax/crypto/IllegalBlockSizeException
    //   334	343	660	javax/crypto/IllegalBlockSizeException
    //   349	359	660	javax/crypto/IllegalBlockSizeException
    //   380	395	660	javax/crypto/IllegalBlockSizeException
    //   16	26	673	java/lang/IllegalStateException
    //   26	31	685	java/lang/IllegalStateException
    //   31	42	685	java/lang/IllegalStateException
    //   56	66	685	java/lang/IllegalStateException
    //   115	136	685	java/lang/IllegalStateException
    //   142	334	685	java/lang/IllegalStateException
    //   334	343	685	java/lang/IllegalStateException
    //   349	359	685	java/lang/IllegalStateException
    //   380	395	685	java/lang/IllegalStateException
    //   16	26	698	java/security/InvalidAlgorithmParameterException
    //   26	31	710	java/security/InvalidAlgorithmParameterException
    //   31	42	710	java/security/InvalidAlgorithmParameterException
    //   56	66	710	java/security/InvalidAlgorithmParameterException
    //   115	136	710	java/security/InvalidAlgorithmParameterException
    //   142	334	710	java/security/InvalidAlgorithmParameterException
    //   334	343	710	java/security/InvalidAlgorithmParameterException
    //   349	359	710	java/security/InvalidAlgorithmParameterException
    //   380	395	710	java/security/InvalidAlgorithmParameterException
    //   16	26	723	java/security/spec/InvalidKeySpecException
    //   26	31	735	java/security/spec/InvalidKeySpecException
    //   31	42	735	java/security/spec/InvalidKeySpecException
    //   56	66	735	java/security/spec/InvalidKeySpecException
    //   115	136	735	java/security/spec/InvalidKeySpecException
    //   142	334	735	java/security/spec/InvalidKeySpecException
    //   334	343	735	java/security/spec/InvalidKeySpecException
    //   349	359	735	java/security/spec/InvalidKeySpecException
    //   380	395	735	java/security/spec/InvalidKeySpecException
    //   16	26	748	java/security/InvalidKeyException
    //   26	31	760	java/security/InvalidKeyException
    //   31	42	760	java/security/InvalidKeyException
    //   56	66	760	java/security/InvalidKeyException
    //   115	136	760	java/security/InvalidKeyException
    //   142	334	760	java/security/InvalidKeyException
    //   334	343	760	java/security/InvalidKeyException
    //   349	359	760	java/security/InvalidKeyException
    //   380	395	760	java/security/InvalidKeyException
    //   16	26	773	javax/crypto/NoSuchPaddingException
    //   26	31	785	javax/crypto/NoSuchPaddingException
    //   31	42	785	javax/crypto/NoSuchPaddingException
    //   56	66	785	javax/crypto/NoSuchPaddingException
    //   115	136	785	javax/crypto/NoSuchPaddingException
    //   142	334	785	javax/crypto/NoSuchPaddingException
    //   334	343	785	javax/crypto/NoSuchPaddingException
    //   349	359	785	javax/crypto/NoSuchPaddingException
    //   380	395	785	javax/crypto/NoSuchPaddingException
    //   16	26	798	java/security/NoSuchAlgorithmException
    //   26	31	810	java/security/NoSuchAlgorithmException
    //   31	42	810	java/security/NoSuchAlgorithmException
    //   56	66	810	java/security/NoSuchAlgorithmException
    //   115	136	810	java/security/NoSuchAlgorithmException
    //   142	334	810	java/security/NoSuchAlgorithmException
    //   334	343	810	java/security/NoSuchAlgorithmException
    //   349	359	810	java/security/NoSuchAlgorithmException
    //   380	395	810	java/security/NoSuchAlgorithmException
    //   6	16	823	java/io/IOException
    //   16	26	834	java/io/IOException
    //   6	16	846	java/io/FileNotFoundException
    //   16	26	857	java/io/FileNotFoundException
    //   6	16	869	java/security/NoSuchAlgorithmException
    //   6	16	880	javax/crypto/NoSuchPaddingException
    //   6	16	891	java/security/InvalidKeyException
    //   6	16	902	java/security/spec/InvalidKeySpecException
    //   6	16	913	java/security/InvalidAlgorithmParameterException
    //   6	16	924	java/lang/IllegalStateException
    //   6	16	935	javax/crypto/IllegalBlockSizeException
    //   6	16	946	javax/crypto/BadPaddingException
  }

  public byte[] decryptMessage(byte[] paramArrayOfByte)
    throws CryptoException
  {
    if ((this.keyOfDecryptor == null) || (this.certOfDecryptor == null))
      throw new CryptoException(this.notInitializeKeyMessage);
    try
    {
      CMSEnvelopedData localCMSEnvelopedData = new CMSEnvelopedData(paramArrayOfByte);
      RecipientId localRecipientId = new RecipientId();
      localRecipientId.setSerialNumber(this.certOfDecryptor.getSerialNumber());
      localRecipientId.setIssuer(this.certOfDecryptor.getIssuerX500Principal().getEncoded());
      RecipientInformation localRecipientInformation = localCMSEnvelopedData.getRecipientInfos().get(localRecipientId);
      if (localRecipientInformation != null)
        return localRecipientInformation.getContent(this.keyOfDecryptor, PROVIDER);
      throw new CryptoException("指定的接收者（解密证书）与发送者（加密证书）不匹配。");
    }
    catch (CMSException localCMSException)
    {
      throw new CryptoException(localCMSException);
    }
    catch (IOException localIOException)
    {
      throw new CryptoException(localIOException);
    }
    catch (NoSuchProviderException localNoSuchProviderException)
    {
      throw new CryptoException(localNoSuchProviderException);
    }
  }

  public boolean doVerify(byte[] paramArrayOfByte1, byte[] paramArrayOfByte2, X509Certificate paramX509Certificate, String paramString)
    throws CryptoException
  {
    if (paramString == null)
      paramString = this.signAlgorithm;
    try
    {
      Signature localSignature = Signature.getInstance(paramString);
      localSignature.initVerify(paramX509Certificate);
      localSignature.update(paramArrayOfByte1);
      boolean bool = localSignature.verify(paramArrayOfByte2);
      return bool;
    }
    catch (NoSuchAlgorithmException localNoSuchAlgorithmException)
    {
      throw new CryptoException(localNoSuchAlgorithmException);
    }
    catch (InvalidKeyException localInvalidKeyException)
    {
      throw new CryptoException(localInvalidKeyException);
    }
    catch (SignatureException localSignatureException)
    {
      throw new CryptoException(localSignatureException);
    }
  }

  public void initCertWithKey(String paramString1, String paramString2)
    throws NotSupportException, CryptoException
  {
    initCertWithKey(paramString1, paramString2.toCharArray());
  }

  public void initCertWithKey(String paramString, char[] paramArrayOfChar)
    throws NotSupportException, CryptoException
  {
    try
    {
      FileInputStream localFileInputStream = new FileInputStream(paramString);
      KeyStore localKeyStore = KeyStore.getInstance("PKCS12");
      localKeyStore.load(localFileInputStream, paramArrayOfChar);
      localFileInputStream.close();
      Enumeration localEnumeration = localKeyStore.aliases();
      while (true)
      {
        if (!localEnumeration.hasMoreElements())
          return;
        String str = (String)localEnumeration.nextElement();
        if (localKeyStore.isKeyEntry(str))
        {
          this.keyOfDecryptor = ((PrivateKey)localKeyStore.getKey(str, paramArrayOfChar));
          this.certOfDecryptor = ((X509Certificate)localKeyStore.getCertificate(str));
        }
      }
    }
    catch (FileNotFoundException localFileNotFoundException)
    {
      throw new CryptoException(localFileNotFoundException);
    }
    catch (KeyStoreException localKeyStoreException)
    {
      throw new CryptoException(localKeyStoreException);
    }
    catch (NoSuchAlgorithmException localNoSuchAlgorithmException)
    {
      throw new CryptoException(localNoSuchAlgorithmException);
    }
    catch (CertificateException localCertificateException)
    {
      throw new CryptoException(localCertificateException);
    }
    catch (IOException localIOException)
    {
      throw new CryptoException(localIOException);
    }
    catch (UnrecoverableKeyException localUnrecoverableKeyException)
    {
      throw new CryptoException(localUnrecoverableKeyException);
    }
  }

  public void initCertWithKey(String paramString1, char[] paramArrayOfChar1, String paramString2, char[] paramArrayOfChar2)
    throws NotSupportException, CryptoException
  {
    try
    {
      FileInputStream localFileInputStream = new FileInputStream(paramString1);
      KeyStore localKeyStore = KeyStore.getInstance("JKS");
      localKeyStore.load(localFileInputStream, paramArrayOfChar1);
      localFileInputStream.close();
      this.keyOfDecryptor = ((PrivateKey)localKeyStore.getKey(paramString2, paramArrayOfChar2));
      this.certOfDecryptor = ((X509Certificate)localKeyStore.getCertificate(paramString2));
      return;
    }
    catch (FileNotFoundException localFileNotFoundException)
    {
      throw new CryptoException(localFileNotFoundException);
    }
    catch (KeyStoreException localKeyStoreException)
    {
      throw new CryptoException(localKeyStoreException);
    }
    catch (NoSuchAlgorithmException localNoSuchAlgorithmException)
    {
      throw new CryptoException(localNoSuchAlgorithmException);
    }
    catch (CertificateException localCertificateException)
    {
      throw new CryptoException(localCertificateException);
    }
    catch (IOException localIOException)
    {
      throw new CryptoException(localIOException);
    }
    catch (UnrecoverableKeyException localUnrecoverableKeyException)
    {
      throw new CryptoException(localUnrecoverableKeyException);
    }
  }

  public SignerAndEncryptedDigest verifyAndParsePkcs7(byte[] paramArrayOfByte1, byte[] paramArrayOfByte2)
    throws SignatureVerifyException, CryptoException
  {
    return SVM.verifyAndParsePkcs7(paramArrayOfByte1, paramArrayOfByte2);
  }

  public X509Certificate verifySignature(String paramString1, String paramString2)
    throws CryptoException, SignatureVerifyException
  {
    return SVM.verifySignature(paramString1, paramString2);
  }

  public X509Certificate verifySignature(byte[] paramArrayOfByte1, byte[] paramArrayOfByte2)
    throws CryptoException, SignatureVerifyException
  {
    return SVM.verifyAndParsePkcs7(paramArrayOfByte1, paramArrayOfByte2).getSigner();
  }
}

/* Location:           C:\Users\user\Desktop\dd28_pcdd720\classes_dex2jar.jar
 * Qualified Name:     com.itrus.cryptorole.bc.RecipientBcImpl
 * JD-Core Version:    0.6.2
 */